package server.foro;
import java.util.*;

import persistencia.*;
import persistencia.dominio.*;
import comun.*;
import comun.constantes.*;
import java.sql.*;
import java.io.*;
import javazoom.upload.*;
import server.aula.ControlAula;
import server.general.*;
import server.grupo.ControlGrupo;
import server.*;
import utils.UtilsFileAndDirectory;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class ControlForo extends Control{
/*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*///la visibilidad
  protected Persistencia persistencia;
  /*HASTA ACA*/
  private boolean ultimo;
  private int cantidadTotalMensajes;
  public ControlForo(Persistencia persistencia) {
      this.persistencia = persistencia;
    }

  public ControlForo(Persistencia persistencia,Connection conexion) {
      this.persistencia = persistencia;
      this.conexionSQL = conexion;
    }

 public Vector getAsuntosForoComision(Long idComision,Long idAula) throws Exception
 {
    Vector asuntosForo;
    String filtro = "(aula.id == "+idComision
    +" | aula.id == "+idAula;
	filtro += ") & (alcance == null)"; /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
	asuntosForo = this.persistencia.getObjectosPorClase("persistencia.dominio.Foro","asunto",filtro,"","",null,null,null);
	//System.out.println("Cantidad de elementos("+asuntosForo.size()+")");
    return asuntosForo;

 }

  public Vector getAsuntosForo(Long idAula)throws Exception
  {

      Vector asuntosForo = new Vector();

      String filtro = "(aula.id == "+idAula;
      filtro += ") & (alcance == null)"; /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
      asuntosForo = this.persistencia.getObjectosPorClase("persistencia.dominio.Foro","asunto",filtro,"","",null,null,null);

      return asuntosForo;
  }

  public Foro getForo(Long idForo) throws Exception
  {
      return (Foro)persistencia.getObjectoPorId("persistencia.dominio.Foro",idForo);

  }

  public String eliminaMensajeForo(Long idMensajeForo, String pathArchivos) throws Exception
  {

      Mensaje mensaje = (Mensaje) persistencia.getObjectoPorId("persistencia.dominio.Mensaje",idMensajeForo);
      String pathArchivo = "";
      if (mensaje.getArchivo()!=null)
      {
         pathArchivo = pathArchivos+"/"+mensaje.getArchivo().getNombre();
         File f = new File(pathArchivo);
         //System.out.println("$$$$$$$$$$$$$$$$$ELIMNADO ARCHIVO:"+f.getAbsolutePath());
         if(f.exists())
             f.delete();
      }

      persistencia.deletePersistente(mensaje);

      return TEXTOS.ELIMINACION_DE_DATOS_EXITOSA;
    }


  public String eliminaForos(Vector idForos) throws Exception
  {
      Enumeration enum = idForos.elements();
      while (enum.hasMoreElements()) {
        Long idForo = (Long)enum.nextElement();
        Foro foro = (Foro)persistencia.getObjectoPorId("persistencia.dominio.Foro",idForo);

        // elimino los mensajes del foro
        persistencia.deletePersistente(foro.getMensajes());
        // elimino el foro
        persistencia.deletePersistente(foro);
      }
      return TEXTOS.ELIMINACION_DE_DATOS_EXITOSA;
  }

 public Long agregarForo(String asuntoForo, String tipoAula,Long idAula,Long idPersona,String pathCarpetaForo) throws Exception
 {
     // obtengo el paricipante para obtener el aula
     server.aula.ControlAula controlAula = new server.aula.ControlAula(persistencia);

     Aula aula=null;
     // si es comision
     if (tipoAula!=null && tipoAula.compareTo(TIPO_AULAS.COMISION)==0)
         aula = (Comision)persistencia.getObjectoPorId("persistencia.dominio.Comision",idAula);
       else
         aula = ((Participante)controlAula.getParticipante(idAula,idPersona)).getAula();


     EstadoForo estadoForo = (EstadoForo) persistencia.getObjectosPorClase("persistencia.dominio.EstadoForo","","nombre==\""+ESTADOS_FORO.ABIERTO+"\"","","",null,null,null).elementAt(0);

     Foro foro = new Foro();
     foro.setAsunto(utils.ManejoString.transformaSimbolosAHTML(asuntoForo));
     foro.setFecha(utils.Utils.hoySqlDate());


     persistencia.hacerPersistente(foro);


     foro.setAula(aula);
     foro.setEstadoForo(estadoForo);
     //crear la carpeta para almacenar los archilvos de los mensajes del foro
     File f = new File(pathCarpetaForo +"/"+PARAMETROS_PAGINAS.ID_FORO+foro.getId());
     //System.out.println(pathCarpetaForo+"/"+PARAMETROS_PAGINAS.ID_FORO+foro.getId());
     if (!f.mkdir())
       throw new Exception();


     return foro.getId();
 }

  public Long agregarMensajeForo(Long idForo, Long idPersona, String contenidoMensaje,String tituloMensaje,
                                 MultipartFormDataRequest mrequest,UploadFile file,UploadBean upLoadBeans,String pathArchivoAbsoluto) throws Exception
  {
       Foro foro = (Foro) persistencia.getObjectoPorId("persistencia.dominio.Foro",idForo);

      Persona persona = (Persona) persistencia.getObjectoPorId("persistencia.dominio.Persona",idPersona);

      Mensaje mensaje= new Mensaje();
      mensaje.setContenido(utils.ManejoString.transformaSimbolosAHTML(contenidoMensaje));
      mensaje.setTitulo(utils.ManejoString.transformaSimbolosAHTML(tituloMensaje));
      mensaje.setFecha(utils.Utils.hoySqlDate());

      persistencia.hacerPersistente(mensaje);
      mensaje.setForo(foro);
      mensaje.setPersona(persona);


      // crear el objeto que tiene el archivo en la base de datos si no existia el archivo
      if (file!=null){
    	  UtilsFileAndDirectory utilsFileAndDirectory = new UtilsFileAndDirectory();
    	  
    	  String nombreArchivo = utils.ManejoString.eliminarCaractaresRaros(utils.Utils.agregarLoginFecha(persona.getLogin(),file.getFileName()));

    	  //Sistema de archivos
    	  Boolean almacenando = utilsFileAndDirectory.almacenandoArchivo(pathArchivoAbsoluto,nombreArchivo,file,mrequest,upLoadBeans);

    	  if(almacenando == null)throw new Exception();
    	  else if(almacenando.booleanValue()){
    		  Archivo archivo = new Archivo();
    		  archivo.setPath(pathArchivoAbsoluto);
    		  archivo.setNombre(nombreArchivo);
    		  archivo.setCantidadDownloads(new Integer(0));
    		  archivo.setFechaUp(utils.Utils.hoySqlDate());
    		  archivo.setTiempoEstimado("ver que poner");
    		  archivo.setTamanio(new Float(file.getFileSize()/1000.0));
    		  archivo.setEscaneadoOk(utilsFileAndDirectory.resultadoEscaneo);
    		  
    		  persistencia.hacerPersistente(archivo);

    		  mensaje.setArchivo(archivo);
    	  }
      }

      return mensaje.getId();
   }
  
  public Long agregarMensajeForoParticular(String tipoAula, Long idPersona, String contenidoMensaje,String tituloMensaje,
		  MultipartFormDataRequest mrequest,UploadFile file,UploadBean upLoadBeans,String pathArchivoAbsoluto)
  {
	  return null;
	/*  try {
		  Foro foro = (Foro) persistencia.getObjectoPorId("persistencia.dominio.Foro",idForo);
		  
		  Persona persona = (Persona) persistencia.getObjectoPorId("persistencia.dominio.Persona",idPersona);
		  
		  Mensaje mensaje= new Mensaje();
		  mensaje.setContenido(utils.ManejoString.transformaSimbolosAHTML(contenidoMensaje));
		  mensaje.setTitulo(utils.ManejoString.transformaSimbolosAHTML(tituloMensaje));
		  mensaje.setFecha(utils.Utils.hoySqlDate());
		  
		  persistencia.hacerPersistente(mensaje);
		  mensaje.setForo(foro);
		  mensaje.setPersona(persona);
		  
		  
//		  crear el objeto que tiene el archivo en la base de datos si no existia el archivo
		  if (file!=null)
		  {
//			  String nombreArchivo = utils.ManejoString.eliminarSimbolosRarosNombresarchivos(file.getFileName());
//			  String nombreArchivo = file.getFileName();
			  String nombreArchivo = utils.ManejoString.eliminarCaractaresRaros(utils.Utils.agregarLoginFecha(persona.getLogin(),file.getFileName()));
			  
			  Archivo archivo = new Archivo();
			  archivo.setPath(pathArchivoAbsoluto);
			  archivo.setNombre(nombreArchivo);
			  archivo.setCantidadDownloads(new Integer(0));
			  archivo.setFechaUp(utils.Utils.hoySqlDate());
			  archivo.setTiempoEstimado("ver que poner");
			  archivo.setTamanio(new Float(file.getFileSize()/1000.0));
			  
			  persistencia.hacerPersistente(archivo);
			  
			  mensaje.setArchivo(archivo);
			  
//			  para que no baje basura
			  File f = new File(pathArchivoAbsoluto+"/"+nombreArchivo);
			  if(f.exists())
				  f.delete();
			  
			  upLoadBeans.setFolderstore(pathArchivoAbsoluto);
			  if ( file.getFileSize() > 0 )
			  {
				  upLoadBeans.store(mrequest, PARAMETROS_PAGINAS.UPLOADFILE);
//				  debo renombrarlo al al archivo para que quede con el nombte con el login iy la fecah incluidos
				  utils.Utils.renombrarArchivo(pathArchivoAbsoluto,file,nombreArchivo);
			  }
			  
		  }
		  
		  return mensaje.getId();
	  }
	  catch (Exception ex) {
		  ex.printStackTrace();
		  persistencia.rollback();
		  return null;
	  }*/
  }


 public String getTipoUsuarioMensaje(Mensaje mensaje,Long idAula)
 {
  try {
    String filtro = "persona.id == "+mensaje.getPersona().getId()
                   +" & aula.id == "+idAula;
    //System.out.println("filtro en tipo usuario del mensaje:"+filtro);
     return ((Participante)this.persistencia.getObjectosPorClase("persistencia.dominio.Participante","",filtro,"","",null,null,null).elementAt(0)).getTipoUsuario().getNombre();
  }
  catch (Exception ex) {
    ex.printStackTrace();
    return "";
  }

 }


  public Long cambiarEstadoForo(Long idForo,String estadoForoParametro) throws Exception
  {
      // obtengo el paricipante para obtener el aula
      //System.out.println("filktro estado Foro: "+"nombre=="+estadoForoParametro);
      EstadoForo estadoForo = (EstadoForo) persistencia.getObjectosPorClase("persistencia.dominio.EstadoForo","","nombre==\""+estadoForoParametro+"\"","","",null,null,null).elementAt(0);
      Foro foro = this.getForo(idForo);
      foro.setEstadoForo(estadoForo);

      return foro.getId();
  }


 public java.sql.Timestamp getFechaUltimoMensaje(Long idForo) throws Exception
 {
   
     String filtro=
         " foro.id == "+idForo;

     Vector mensajes = persistencia.getObjectosPorClaseYFiltro
             ("persistencia.dominio.Mensaje","fecha descending",filtro);

     if (mensajes.size()!=0)
       return ((persistencia.dominio.Mensaje)mensajes.elementAt(0)).getFecha();
     return
       null;  
 }


 public Vector getOpinionesForo(Long idForo,int indiceMenor,int indiceMayor)
 {
   try
   {
     Vector ultimosMensajes = new Vector();


     String filtro=
         " foro.id == "+idForo;

     Vector mensajes = persistencia.getObjectosPorClaseYFiltro
             ("persistencia.dominio.Mensaje","fecha descending",filtro);

     int mensaje = 0;
     // seteo la cantidad totalde textos
     this.setCantidadTotalMensajes(mensajes.size());

     Enumeration enum = mensajes.elements();
     // paso los textos que no hacen falta
     while (enum.hasMoreElements() & mensaje<indiceMenor) {
       enum.nextElement();
       mensaje++;
     }

     while (enum.hasMoreElements() & mensaje<indiceMayor) {
       ultimosMensajes.addElement(enum.nextElement());
       mensaje++;
     }
     // esto es para saber si se mostro el ultmi mensaje
     if (enum.hasMoreElements())
       this.setUltimo(false);
     else
       this.setUltimo(true);

     return ultimosMensajes;
   }
   catch (Exception ex) {
     ex.printStackTrace();
     persistencia.rollback();
     return new Vector();
   }
 }

//retorna si hay nuevos mensaje en los foros del aula
 public Vector alertaAula(Long idAula,Long idPersona)
 {
   try
   {
     Vector ultimosMensajes = new Vector();
     // para el alerta de calendario
     // esto es por como rabaja la persistencia levanta objetos del tipo
     // y no de subclases de este (Aula, AulaCompuesta, etc)
     // entonces obtengo el participante
     String filtro=
         " aula.id == "+idAula+
         " & persona.id == "+ idPersona;

     Vector participantes = persistencia.getObjectosPorClaseYFiltro
             ("persistencia.dominio.Participante",filtro);

     Participante participante = null;
     ParticipanteComision participanteComision = null;
     if (participantes.size()!=0)
       participante = (Participante) participantes.elementAt(0);
     else
     {
       //debio obtener el participante comision
       String filtroComision=
           " comision.id == "+idAula+
           " & participante.persona.id == "+ idPersona;

       Vector participantesComision = persistencia.getObjectosPorClaseYFiltro
               ("persistencia.dominio.ParticipanteComision",filtroComision);
       participanteComision = (ParticipanteComision) participantesComision.elementAt(0);
     }


    // si hay informaicon de seguimiento la utilizo
     ControlGeneral controlGeneral = new ControlGeneral(this.persistencia,this.getConexionSQL());

     Timestamp fechaUltimoAcceso = controlGeneral.ultimoAccesoARecurso(idAula,idPersona,RECURSOS.FORO_ASUNTO);

     if (fechaUltimoAcceso==null)
     {
       fechaUltimoAcceso = (participante!=null)?participante.getFechaUltimoAcceso():participanteComision.getFechaUltimoAcceso();
       // para que las alertas del dia sigan sigan apareciendo
       fechaUltimoAcceso = utils.Utils.comienzoDia(fechaUltimoAcceso);
     }


     // DE ACUERDO AL TIPO DE COMUNICACION OPBTENGO EL ID

     // para que las alertas del dia sigan sigan apareciendo

     String imports = "import java.sql.Timestamp";
     String parametros = "java.sql.Timestamp fechaUltimoAcceso";

     String filtroFecha= " & fecha >= fechaUltimoAcceso";

     filtro=
         " foro.aula.id == "+idAula;
     filtro += " & foro.alcance!= \""+TIPO_ACTIVIDAD_EN_GRUPOS.GRUPAL+"\"";
      

 //  si es comision debo obtener el id del Curso
//     if ()

     //System.out.println("parametros alerta: "+parametros);
     //System.out.println("filtro alerta: "+filtro+filtroFecha);

     //System.out.println("fechaUltimoAcceso: "+fechaUltimoAcceso);

     // si accede por primera vez al aula
     if (fechaUltimoAcceso==null)
       fechaUltimoAcceso = utils.Utils.hoySqlDate();

     Vector mensajes = persistencia.getObjectosPorClase("persistencia.dominio.Mensaje"
         ,"fecha descending",filtro+filtroFecha,"", parametros,fechaUltimoAcceso,null,null);

     //System.out.println("------------ALERTA Aula IDAULA:"+idAula);
     //System.out.println("------------ALERTA AULA RESULATADO:"+mensajes.size());
    if (mensajes.size()!=0){
 	   return mensajes;
    }
    return null; 
   }
   catch (Exception ex) {
     ex.printStackTrace();
     persistencia.rollback();
     return null;
   }
 }

 // retorna si hay nuevos mensaje en los foros del Aula y la Comision
 public Vector alertaComision(Long idComision,Long idPersona)
 {
   try
   {
     Vector ultimosMensajes = new Vector();
     // para el alerta de calendario
     // esto es por como rabaja la persistencia levanta objetos del tipo
     // y no de subclases de este (Aula, AulaCompuesta, etc)
     // entonces obtengo el participante
     String filtro=
         " comision.id == "+idComision+
         " & participante.persona.id == "+ idPersona;

     Vector participantesComision = persistencia.getObjectosPorClaseYFiltro
             ("persistencia.dominio.ParticipanteComision",filtro);

     ParticipanteComision participanteComision = (ParticipanteComision) participantesComision.elementAt(0);

     Timestamp fechaUltimoAcceso = participanteComision.getFechaUltimoAcceso();
     // DE ACUERDO AL TIPO DE COMUNICACION OPBTENGO EL ID

     // para que las alertas del dia sigan sigan apareciendo
     fechaUltimoAcceso = utils.Utils.comienzoDia(fechaUltimoAcceso);

     String imports = "import java.sql.Timestamp";
     String parametros = "java.sql.Timestamp fechaUltimoAcceso";

     String filtroFecha= " & fecha >= fechaUltimoAcceso";

     filtro=
         " foro.aula.id == "+idComision;

 //  si es comision debo obtener el id del Curso
//     if ()

     //System.out.println("parametros alerta: "+parametros);
     //System.out.println("filtro alerta: "+filtro+filtroFecha);

     //System.out.println("fechaUltimoAcceso: "+fechaUltimoAcceso);

     // si accede por primera vez al aula
     if (fechaUltimoAcceso==null)
       fechaUltimoAcceso = utils.Utils.hoySqlDate();

     Vector mensajes = persistencia.getObjectosPorClase("persistencia.dominio.Mensaje"
         ,"fecha descending",filtro+filtroFecha,"", parametros,fechaUltimoAcceso,null,null);


     // obtengo el idAula del Aula de la comision
     Comision comision = (Comision)persistencia.getObjectoPorId(
         "persistencia.dominio.Comision",idComision);
     Long idAula = comision.getAulaCompuesta().getId();
     //System.out.println("------------ALERTA COMISION IDAULA:"+idAula);
     //System.out.println("------------ALERTA AULA RESULATADO:"+this.alertaAula(idAula,idPersona));
     //System.out.println("------------ALERTA COMSION:"+mensajes.size());
     // si hay mensajes en los foros de la comision o en los foros del aula
     Vector alertasDelAula = this.alertaAula(idAula,idPersona);
     if (mensajes.size()!=0 || (alertasDelAula!=null)){
       mensajes.addAll(alertasDelAula);	
       return mensajes;
     }  
     return null;
   }
   catch (Exception ex) {
     ex.printStackTrace();
     persistencia.rollback();
     return null;
   }
 }
/*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
//retorna si hay nuevos mensaje en los foros del Aula, la Comision y Grupo
public Vector alertaGrupo(Long idGrupo,Long idPersona, Long idComision)
{
	try
	{
	  Vector ultimosMensajes = new Vector();
	  // para el alerta de calendario
	  // esto es por como trabaja la persistencia levanta objetos del tipo
	  // y no de subclases de este (Aula, AulaCompuesta, etc)
	  // entonces obtengo el participante
	  String filtro=
	      " comision.id == "+idGrupo+
	      " & participante.persona.id == "+ idPersona;
	
	  Vector participantesComision = persistencia.getObjectosPorClaseYFiltro
	          ("persistencia.dominio.ParticipanteComision",filtro);
	
	  ParticipanteComision participanteComision = (ParticipanteComision) participantesComision.elementAt(0);
	
	  Timestamp fechaUltimoAcceso = participanteComision.getFechaUltimoAcceso();
	  // DE ACUERDO AL TIPO DE COMUNICACION OPBTENGO EL ID
	
	  // para que las alertas del dia sigan apareciendo
	  fechaUltimoAcceso = utils.Utils.comienzoDia(fechaUltimoAcceso);
	
	  String imports = "import java.sql.Timestamp";
	  String parametros = "java.sql.Timestamp fechaUltimoAcceso";
	
	  String filtroFecha= " & fecha >= fechaUltimoAcceso";
	
	  filtro=
	      " foro.aula.id == "+idGrupo;
	
	//si es comision debo obtener el id del Curso
	//  if ()
	
	   //System.out.println("parametros alerta: "+parametros);
	   //System.out.println("filtro alerta: "+filtro+filtroFecha);
	
	   //System.out.println("fechaUltimoAcceso: "+fechaUltimoAcceso);
	
	  // si accede por primera vez al aula
	  if (fechaUltimoAcceso==null)
	    fechaUltimoAcceso = utils.Utils.hoySqlDate();
	
	  Vector mensajes = persistencia.getObjectosPorClase("persistencia.dominio.Mensaje"
	      ,"fecha descending",filtro+filtroFecha,"", parametros,fechaUltimoAcceso,null,null);
	
	
	  // obtengo el idAula del Aula de la comision
	  Grupo grupo = (Grupo)persistencia.getObjectoPorId(
	      "persistencia.dominio.Grupo",idGrupo);
	  Long idAula = grupo.getAulaCompuesta().getId();
	  
	   //System.out.println("------------ALERTA COMISION IDAULA:"+idAula);
	   //System.out.println("------------ALERTA AULA RESULATADO:"+this.alertaAula(idAula,idPersona));
	   //System.out.println("------------ALERTA COMSION:"+mensajes.size());
	  // si hay mensajes en los foros de la comision o en los foros del aula
	  	Vector alertasDelAula = this.alertaAula(idAula,idPersona);
	  	Vector alertasDelaComision = this.alertaComision(idComision,idPersona);	      
	  if (mensajes.size()!=0 || (this.alertaAula(idAula,idPersona)!=null) || (this.alertaComision(idComision,idPersona)!=null)){
		  mensajes.addAll(alertasDelAula);
		  mensajes.addAll(alertasDelaComision);
	    return mensajes;
	  }
	  return null;
	}
	catch (Exception ex) {
	  ex.printStackTrace();
	  persistencia.rollback();
	  return null;
	}
	}
/*HASTA ACA*/

/*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
public Vector getAsuntosForoGrupalesComision(Long idComision,Long idAula,boolean paraTodos) throws Exception
{
 try {
   Vector asuntosForo;
   String vars= "";
    String filtro = "(aula.id == "+idComision
                  +" | aula.id == "+idAula;
    filtro += ") & alcance != null"; /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
    
    if(paraTodos){
 	   		filtro += " & paraQuien.startsWith(\"Todos los grupos\")";
    }else{
 	   		filtro += " & paraQuien.startsWith(\"Algunos:\")";
 	   		//Controlo que alguno de los grupos asociados al foro pertenezca a la comision
 	   		  boolean agregoForo = false;
			  ControlGrupo controlGrupo = new ControlGrupo(this.persistencia);
			  Vector gruposDeLaComision = controlGrupo.getGruposSoloDeLaComision(idComision,false,false);
			  filtro += "& forosGrupales.contains(foroGrupal) & (";
			  for (Iterator i = gruposDeLaComision.iterator(); i.hasNext(); ) {
				  Grupo grupo = (Grupo)i.next();
				  filtro += " foroGrupal.grupo.id == "+grupo.getId()+" |";
				  agregoForo = true;
			  }
			  if(!agregoForo)filtro+="false";// si no agrego ninguna actividad le agrego una condicion para que sea falso  
			  else filtro=filtro.substring(0,filtro.length()-1);//le saco el ultimo or
			  filtro +=")";
			  vars= "persistencia.dominio.ForoGrupal foroGrupal";
   		
    }     
    
    asuntosForo = this.persistencia.getObjectosPorClase("persistencia.dominio.Foro","asunto",filtro,vars,"",null,null,null);
    //System.out.println("........................ASUNTOS FORO GRUPALES COMISION");
    return asuntosForo;
 }
 catch (MyException ex) {
   ex.printStackTrace();
   this.persistencia.rollback();
   return new Vector();
 }

}

 public Vector getAsuntosForoGrupales(Long idAula,boolean paraTodos) throws Exception
 {
   try {
     Vector asuntosForo = new Vector();
     ControlAula controlAula = new ControlAula(this.persistencia);
     Vector comisionesDelAula = null;
	comisionesDelAula = controlAula.getComisionesDelAula(idAula);
      boolean agregoForo = false;
     String filtro = "(aula.id == "+idAula+" |"; /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
            
     for (Iterator i = comisionesDelAula.iterator(); i.hasNext(); ) {
  	      Comision comision = (Comision)i.next();
  	      //System.out.println("NOMBRE DE LA COMISION......................."+comision.getNombre());
  	      filtro+=" aula.id == "+comision.getId()+" |";
  	      agregoForo = true;
     }
     if(!agregoForo)filtro+="false";// si no agrego ninguna actividad le agrego una condicion para que sea falso  
     else filtro=filtro.substring(0,filtro.length()-1);//le saco el ultimo or
            
     filtro += ") & alcance != null"; /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
     
     if(paraTodos){
  	   filtro += " & paraQuien.startsWith(\"Todos los grupos\")";
     }else{
  	   filtro += " & paraQuien.startsWith(\"Algunos:\")";
     }
     asuntosForo = this.persistencia.getObjectosPorClase("persistencia.dominio.Foro","asunto",filtro,"","",null,null,null);
     //System.out.println(".......................................................Tamanio:"+asuntosForo.size());
     return asuntosForo;
   }
   catch (MyException ex) {
     ex.printStackTrace();
     this.persistencia.rollback();
     return new Vector();
   }
 }
 
 public Vector getAsuntosForoPropiosDelGrupo(Vector grupos)
 {
   try {
     Vector asuntosForo = new Vector();       
     
     String filtro = "("; /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
     boolean agregoForo = false;
     for (Iterator i = grupos.iterator(); i.hasNext(); ) {
  	      Grupo grupo = (Grupo)i.next();
  	      filtro+=" aula.id == "+grupo.getId()+" |";
  	      agregoForo = true;
     }
     if(!agregoForo)filtro+="false";// si no agrego ninguna actividad le agrego una condicion para que sea falso  
     else filtro=filtro.substring(0,filtro.length()-1);//le saco el ultimo or
     filtro+=")";
     asuntosForo = this.persistencia.getObjectosPorClase("persistencia.dominio.Foro","asunto",filtro,"","",null,null,null);
     return asuntosForo;
   }
   catch (MyException ex) {
     ex.printStackTrace();
     this.persistencia.rollback();
     return new Vector();
   }
 }
 
 /*HASTA ACA*/

  public void setUltimo(boolean ultimo) {
    this.ultimo = ultimo;
  }
  public boolean isUltimo() {
    return ultimo;
  }
  public void setCantidadTotalMensajes(int cantidadTotalMensajes) {
    this.cantidadTotalMensajes = cantidadTotalMensajes;
  }
  public int getCantidadTotalMensajes() {
    return cantidadTotalMensajes;
  }

}